package gruppoE;

/**
 * Server che risponde alla richiesta ricevuta da un client browser.
 */
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import server.IHTTPServer;

public class TestServer implements IHTTPServer{

	@Override
	public ArrayList<String> elaboraRispostaHTTP(List<String> richiestaHTTP) {
		ArrayList<String> risposta=new ArrayList<String>();
		ArrayList<String> rispostaFile=new ArrayList<String>();
		
		
		ArrayList<String> richiestaHttpLista = new ArrayList<String>();
		for (int i = 0; i < richiestaHTTP.size(); i++) {
			richiestaHttpLista.add(richiestaHTTP.get(i));
		}
		
		String stringaArrivata = new String();
		stringaArrivata=richiestaHTTP.get(0);
		
		String[] divisione;
		
		divisione=stringaArrivata.split(" /");
		
		divisione=divisione[1].split(" ");
		String fileDaMandare = divisione[0];
		
		//TODO L'implementazione deve essere fatta con un Proxy
		//Contro TODO Nooooooo !!! L'implementazione va fatta con uno Strategy!!! :P
		//A che serve il proxy ?
		boolean giaTrovato=false;
		for (int i = 0; i < fileDaMandare.length(); i++) {
			if (fileDaMandare.charAt(i)=='?'){
				String[] servizi = fileDaMandare.split("?");
				
				
				/* TODO:
				 * il concetto è buono, ma esistono modi di gran lunga migliori per
				 * verificare se 'serivizi[0]' è uguale a una qualsiasi di una certa
				 * Collections di stringhe e, di conseguenza, impostare giaTrovato=true;
				 */
				if (servizi[0].equalsIgnoreCase("insierisci")){
					//rispostaFile=Servizio1.getSingleton().getRisultato(fileDaMandare);
					giaTrovato=true;
				}
				else {
					if (servizi[0].equalsIgnoreCase("uscite")){
						//rispostaFile=Servizio2.getSingleton().getRisultato(fileDaMandare);
						giaTrovato=true;
					}
					else {
						if (servizi[0].equalsIgnoreCase("sintesi")){
							//rispostaFile=Servizio3.getSingleton().getRisultato(fileDaMandare);
							giaTrovato=true;
						}
						else {
							if (servizi[0].equalsIgnoreCase("registro")){
								//rispostaFile=Servizio4.getSingleton().getRisultato(fileDaMandare);
								giaTrovato=true;
							}
							else {
								if (servizi[0].equalsIgnoreCase("operatori")){
									//rispostaFile=Servizio5.getSingleton().getRisultato(fileDaMandare);
									giaTrovato=true;
								}
								else {
									if(servizi[0].equalsIgnoreCase("residui")){
										//rispostaFile=Servizio6.getSingleton().getRisultato(fileDaMandare);
										giaTrovato=true;
									}
									else{
										//rispostaFile=Servizio7.getSingleton().getRisultato(fileDaMandare);
										giaTrovato=true;
									}
								}
							}
						}
					}
				}
			}
		}
		if (!giaTrovato){
			rispostaFile=Servizio0.getSingleton().getRisultato(fileDaMandare);
		}
		
		
		
		
		Collections.addAll(risposta, "HTTP/1.1 200 OK", 
				"Date: Tue, 01 Apr 2014 08:41:20",
				"Content-Type: text/html; charset=utf-8",
				"");
		for (int i = 0; i < rispostaFile.size(); i++) {
			risposta.add(rispostaFile.get(i));
		}
		
		
//		Collections.addAll(risposta, "HTTP/1.1 200 OK", 
//				"Date: Tue, 01 Apr 2014 08:41:20",
//				"Content-Type: text/html; charset=utf-8",
//				"",
//				"<html>",
//				"	<head>	",
//				"		<title>Errore!!</title>",
//				"		<meta charset=\"UTF-8\"/>",
//				"	</head>",
//				"	<body>",
//				"		<h1>Pagina Non Trovata !!!</h1>",
//				"		Verifica di aver scritto correttamente l'URL",
//				"	</body>",
//				"</html>");
		
		return risposta;
	}
}
